package ACwing.P2DataSturcture;

import java.util.Scanner;

/**
 * @Date : 2023-03-02
 * @Description:827. 双链表
 */
public class DoubleLinkedList {

    // e[]表示节点的值，l[]表示节点的左指针，r[]表示节点的右指针，idx表示当前用到了哪个节点
    static int N=100010;
    static int[] e=new int[N];
    static int[] l=new int[N];
    static int[] r=new int[N];
    //l,r左右节点
    static int idx,m;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        init();
        m=sc.nextInt();
        while(m--!=0){
            String oper=sc.next();
            if("L".equals(oper)){
                addToRight(0,sc.nextInt());
            }
            else if("R".equals(oper)){
                addToRight(l[1],sc.nextInt());
            }else if("D".equals(oper)){
                remove(sc.nextInt()+1);
            }else if("IL".equals(oper)){
                addToRight(l[sc.nextInt()+1],sc.nextInt());
            }else
                //("IR".equals(oper))
            {
                addToRight(sc.nextInt()+1,sc.nextInt());
            }
        }
        for (int i = r[0]; i !=1; i=r[i]) {
            System.out.print(e[i]+" ");
        }
    }
    public static void init(){
        //0 代表左端点，1表示右端点
        r[0]=1;// 0号点的右边是右端点，1号点的左边是左端点
        l[1]=0;
        idx=2;
    }
    //k在右边插入一个点,在左边插入则传入l[k]  add(l[k],x)
    public static void addToRight(int k,int x){
        e[idx]=x;
        r[idx]=r[k];
        l[idx]=k;
        l[r[k]]=idx;
        r[k]=idx;
        idx++;
    }
    //删除第k个点
    public static void remove(int k){
        r[l[k]]=r[k];
        l[r[k]]=l[k];
    }
}
